CloudWatchEventsからLambdaを呼び出す汎用トリガー
はじめに
瀬田@大阪オフィスです。最近、IAMの泥濘で溺れています。
概要
CloudWatchEventsから呼び出されるLambdaは、CloudWatchEventsのRuleを指定して呼び出し権限を付与する必要があります。ひとつのルールから呼び出すだけであれば問題ないのですが、Lambdaを呼び出すRuleが毎回変わる場合、トリガが大量に増殖することになります。これを防ぐために汎用的な権限を付与する方法をご紹介します。
困った状態
マネージメントコンソールからトリガを追加してみるとRuleを固定でしか登録できないことがわかります。 このLambdaは呼び出されるRuleが毎回変わるので困ってしまいました。
解決
マネコンがダメならCLIということで、以下でトリガ登録してみます。source-arnでワイルドカード使えばいけるだろうという皮算用。
aws lambda add-permission \ --function-name test \ --statement-id test-events \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:ap-northeast-1:[アカウント]:rule/*
マネコンで確認してみると「ルール * が見つかりませんでした。」というエラーになっています。 ちなみに、下段はRuleを固定で登録した場合です。
動作する確認すると、特に問題なく動作します。単純にマネコン側での表示の問題のようです。
最後に
挙動に怪しいところがないので問題なさそうです。 ただし、エラー表示されていることは事実であるため、利用は自己責任でおねがいます。